

import os
import subprocess




def png_to_svg_path(png_path, dpi=300):
    # 生成临时的路径文件
    tmp_path = "pp.svg"
    # 调用potrace命令行工具转换PNG到路径
    subprocess.run(
        [
            "D:\soft\potrace-1.16.win64\potrace-1.16.win64\potrace.exe",
            "-s",  # 生成路径
            "-o", tmp_path,  # 输出路径文件
            "-b", "svg",  # 边界模式
            "-G",  # 使用curve加入平滑控制
            str(dpi),  # 分辨率
            png_path,  # 输入PNG文件
        ],
        check=True
    )

    # 读取路径文件并生成SVG
    with open(tmp_path) as file:
        path_data = file.read()
    os.remove(tmp_path)  # 删除临时文件

    # 生成SVG字符串
    svg = f'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 1">\n' \
          f'  <path d="M {path_data.strip()} Z" fill="black" />\n' \
          '</svg>'

    return svg


# 使用函数转换PNG到SVG路径
png_path = "shipin_9.pgm"
svg_path = png_to_svg_path(png_path)
print(svg_path)  # 打印生成的SVG路径
